home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / bin / make-memtest86+-boot-floppy < prev    next >
Text File  |  2009-10-23  |  3KB  |  111 lines

  1. #!/bin/sh
  2. #
  3. # Script for making a memtest86 boot floppy using GRUB as bootloader
  4. #
  5.  
  6. # (c) 2003 Peter Loje Hansen <pl@2m.dk>
  7. #  - original version
  8. # (c) 2004 Yann Dirson <dirson@debian.org>
  9. #  - added parameters
  10. #  - ability to work on a floppy image instead of a real floppy
  11. #  - adapted patches from Martin Koeppe <martin@koeppe-net.de>, to use
  12. #    mtools and install full grub
  13.  
  14. # TODO:
  15. # - add a flag to generate a default boot entry for (hd0)
  16.  
  17. set -e
  18.  
  19. MEMTEST=/boot/memtest86+.bin
  20. FLOPPYIMAGE=/dev/fd0
  21. GRUBBIN=/usr/sbin/grub 
  22. GRUBLIB=/usr/lib/grub
  23. MFORMAT=/usr/bin/mformat 
  24.  
  25. arch=$(dpkg --print-architecture)
  26. case "$arch" in
  27.   i386|?*-i386)   GRUBARCH=i386;;
  28.   amd64|?*-amd64) GRUBARCH=x86_64;;
  29.   *)              error "Unsupported architecture: $arch";;
  30. esac
  31.  
  32. error()
  33. {
  34.     echo >&2 "$0: $*"
  35.     exit 1
  36. }
  37.  
  38. needsarg()
  39. {
  40.     [ $1 -ge 2 ] || error "syntax error"
  41. }
  42.  
  43. [ -d $GRUBLIB ] || error "Can't find $GRUBLIB - did you install a recent grub package (0.95+cvs20040624 or later) ?"
  44. [ -x $MFORMAT ] || error "Can't find mformat - did you install the mtools package ?"
  45.  
  46. while [ $# -gt 0 ]
  47. do
  48.     case "$1" in
  49.     --help) echo "$0 [--memtest $MEMTEST] [--floppyimage $FLOPPYIMAGE]"; exit 0 ;;
  50.     --memtest) needsarg $#; MEMTEST="$2"; shift ;;
  51.     --floppyimage) needsarg $#; FLOPPYIMAGE="$2"; shift ;;
  52.     *) error "syntax error" ;;
  53.     esac
  54.     shift
  55. done
  56.  
  57. MOUNTPOINT=$(mktemp -d)
  58.  
  59. if [ -b "$FLOPPYIMAGE" ]
  60. then
  61.     FINALDEV="$FLOPPYIMAGE"
  62.     FLOPPYIMAGE="$(mktemp)"
  63. else
  64.     FINALDEV=""
  65. fi
  66.  
  67. echo "* Creating msdos file system"
  68. echo
  69. if [ ! -s "$FLOPPYIMAGE" ]; then
  70.     # unless a non-empty image exists, create a blank one first
  71.     dd bs=1024 count=1440 if=/dev/zero of="$FLOPPYIMAGE"
  72. fi
  73. # FIXME: "-f 1440" should probably be dropped
  74. mformat -i $FLOPPYIMAGE -f 1440 :: 
  75.  
  76. mmd -i $FLOPPYIMAGE ::/boot 
  77. mmd -i $FLOPPYIMAGE ::/boot/grub 
  78.  
  79. echo
  80. echo "* Installing GRUB files"
  81. mcopy -v -i "$FLOPPYIMAGE" - ::/boot/grub/menu.lst <<EOF
  82. color green/black light-green/black
  83. default 0
  84. timeout 10
  85. title  memtest
  86. kernel (fd0)/boot/memtest.bin
  87. EOF
  88. mcopy -v -i "$FLOPPYIMAGE" $GRUBLIB/$GRUBARCH/* ::/boot/grub 
  89.  
  90. echo
  91. echo "* Installing $MEMTEST"
  92. mcopy -v -i "$FLOPPYIMAGE" "$MEMTEST" ::/boot/memtest.bin 
  93.  
  94. echo
  95. echo -n "* Installing GRUB"
  96. $GRUBBIN --batch --device-map=/dev/null <<EOF
  97. device (fd0) $FLOPPYIMAGE
  98. root (fd0)
  99. setup (fd0)
  100. quit
  101. EOF
  102.  
  103. if [ -n "$FINALDEV" ]; then
  104.     echo
  105.     echo "Insert a writable floppy for $FINALDEV and press enter"
  106.     read FOO
  107.  
  108.     dd bs=1024 if="$FLOPPYIMAGE" of="$FINALDEV"
  109.     rm "$FLOPPYIMAGE"
  110. fi
  111.